package com.fzkj.algorithm;
import java.util.*;

public class reconstructQueue{
	public static int[][] reconstructQueue(int[][] people) {
	// 找到数组中最小的key，他的value就是这个数组的下标，
	// 使用tem记录当前的下标
	// 找到第二小的，他的value就是他的下标【需要排除掉比他小的】
	Arrays.sort(people, new Comparator<int[]>() {
		@Override
		public int compare(int[] o1, int[] o2) {
			return o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0];
		}
	});

	for (int i = 0; i < people.length; i++) {
		for (int j = 0; j < 2; j++) {
			System.out.print(people[i][j] + " ");
		}
		System.out.print("\t");
	}

	/// 50 70  52 61 44 71
	List<int[]> list = new ArrayList<>();
	//K值定义为 排在h前面且身高大于或等于h的人数
	//因为从身高降序开始插入，此时所有人身高都大于等于h
	//因此K值即为需要插入的位置
	for (int[] k : people) {
		list.add(k[1], k);
	}
	return list.toArray(new int[list.size()][]);
}

public static void main(String[] args) {
	int[][] ints = reconstructQueue(new int[][]{{7, 0}, {4, 4}, {7, 1}, {5, 0}, {6, 1}, {5, 2}});
}
}